@startuml
actor "Abstract Object" as AO
participant "clipboardWatcher" as CW
participant "Буфер обмена ОС" as QC

AO -> CW : setClipboardData(data)


CW -> QC : setText(data)
note right of CW : Передаем данные в буфер обмена
CW -> CW : generateHash(data)
note right of CW : генерируем и сохраняем хэш\n защищаемой информации
CW -> CW : startTimer()

note right of CW : Таймер установлен на 7 секунд


... спустя 7 секунд ...
CW -> CW : timer.timeout()
CW -> QC : text()
note right of CW : получаем данные из буфера обмена
CW -> CW : generateHash(currentText)
note right of CW : генерируем и сохраняем хэш\n информации из буфера обмена
alt если хэш данных переданных и хэш данных,\n которые хранятся в буфер обмена одинаковый
        CW -> QC : clear()
        note right of CW : очищаем буфер обмена ОС
        CW -> AO : уведомление, что буфер обмена очищен
end

@enduml